﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tasker.Infrastructure.Entities;

namespace Tasker.Infrastructure
{
    public interface ITaskService
    {
        ITask SelectTask(int id);
        ITask SelectTask(int userId, DateTime CreatedDate);
        IEnumerable<ITask> SelectAllIncoming(int userId);
        IEnumerable<ITask> SelectAllOutcoming(int userId);
        void CompleteAllSubTasks(int taskId);
        ITask GetBlankEntity();
        IStatus GetTaskStatus(int statusId);
        IEnumerable<IUser> GetTaskWorkers(int taskId);
        IUser GetTaskWorker(int taskId);
        void DeleteAllTaskWorkers(int taskId);
        void CreateTaskWorker(int taskId, int userId);
        IEnumerable<ITask> SelectAll();
        IEnumerable<ITask> SelectTasksByStatus(int statusId);
        IEnumerable<ITask> SelectUserTasks(int userId, int statusId = -1); 
        ITask AddTask(ITask entity);
        void DeleteTask(int id);
        void UpdateTask(ITask entity);
    }
}
